package tech.wangtong.controller;

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import tech.wangtong.pojo.User;
import tech.wangtong.service.UserService;
import tech.wangtong.service.impl.UserServiceImpl;
import tech.wangtong.util.PageHelper;
import tech.wangtong.util.UpDownUtil;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

//ioc扫描注解
@Controller
public class UserController {
    UserService us=new UserServiceImpl();
    @RequestMapping("/down")
    public ResponseEntity<byte[]> down(String filename,HttpServletRequest req){
        return UpDownUtil.download(filename,req);
    }
    @RequestMapping("/login")
    public String login(User u, HttpSession session){
        User user = us.login(u.getName(), u.getPassword());
        if (user!=null){
            session.setAttribute("user",user);
            //登陆失败不适合做转发,适合重定向
            return "redirect:/show";
        }
        //登陆失败不适合做转发,适合重定向
        return "redirect:/toLogin";
    }
    @RequestMapping("/show")
    public String user(Map m,Integer pageNum,Integer pageSize,HttpSession session){
        if (pageNum==null) pageNum=1;
        if(pageSize==null){//每页传递pageSize,可以在session获取
            pageSize=(Integer) session.getAttribute("pageSize");
            //但是第一次获取session可能也没有，在设置默认值
           if(pageSize==null) pageSize=2;
        }else {//传递了pageSize 保存session作用域
            session.setAttribute("pageSize",pageSize);
        }

        PageHelper<User> p=us.page(pageNum,pageSize);
        //适合做转发的，刷新一下最先数据，还可以保留request作用域
        m.put("p",p);
//        return "forward:/day1/user.jsp";SS
        return "/user/user";
    }
    @RequestMapping("/reg")
    public String reg(User u, MultipartFile headImg, HttpServletRequest req){
        String filename = UpDownUtil.upload(headImg, req);
        if (filename==null) filename="default.jpg";
        u.setHeadPic(filename);
        int i = us.add(u);
        if (i>0){
            //不能转发，一定重定向(否则刷新一次,新增一次)
            return "redirect:/toLogin";
        }
        //适合重定向
        return "redirect:/toReg";
    }

    /*表示转发到指定的页面中,登录和注册可以访问，提供路口
    * 但是展示页面没有提供入口（因为展示用户界面需要数据，需要先查询才能进去）*/
    @RequestMapping("/toLogin")
    public String toLogin(){
        return  "/user/login";
    }
    @RequestMapping("/toReg")
    public String toReg(){
        return  "/user/reg";
    }

}
